# compare signs for property values
LT = '<'
GT = '>'
LE = '<='
GE = '>='
EQ = '='

# properties
COLOR 	= 'color'
WEIGHT 	= 'weight'
WIDTH 	= 'width'
HEIGHT 	= 'height'

# message types

CHOOSE			= 'choose'
# arg1 = block_id
#	Sent by an agent to let others know that it gained ownership
# 	of a slot

SLOT_ASK		= 'slot_ask'
# arg1 = block_id
# 	An agent requests the slot occupied by the block with this id.

SLOT_ANSWER		= 'slot_answer'
# arg1 = slot_object or None
# 	An agent replies with the slot occupied by a block, or None if 
#	it doesn't currently use the block

SLOT_DECOMMIT	= 'slot_decommit'
# arg1 = block_id
#	Cancel a KEEP_BLOCK commitment

SLOT_TRADE		= 'slot_trade'
# arg1 = ID of the block the trading agent requests
# arg2 = ID of the block the trading agent offers in return

SECTION_ASK			= 'section_ask'
# arg1 = block_id
#	Request a section object for the current block

SECTION_ANSWER		= 'section_answer'
# arg1 = section
# arg2 = slot to block mapping for the section
#	Reply to a SECTION_ASK

SECTION_DECOMMIT	= 'section_decommit'
# arg1 = section
# 	Cancel a KEEP_SECTION commitment and the corresponding KEEP_BLOCKs

SECTION_TRADE		= 'section_trade'
# arg1 = old section
# arg2 = new(merged) section
# arg3 = new(complete) mapping of slots to blocks
# 	Sharing request for the section, together with the proposed 
# 	slot to block mapping (all these blocks are owned by one or the other
#	of the sharing agents)

CHOOSE_PHASE_OVER	= 'choose_phase_over'
# sent to all when the choosing phase is over

# commitment types
KEEP_BLOCK = 'keep_block'
KEEP_SECTION = 'keep_section'
SHARE_SECTION = 'share_section'

# maximum recursion depth when trading blocks
MAX_DEPTH = 6

# predicates 
ON = 'on'
CLEAR = 'clear'
ONGROUND = 'onground'

# operations
STACK = 'stack'
UNSTACK = 'unstack'
START = 'start'
END = 'end'
